home *** CD-ROM | disk | FTP | other *** search
/ Amiga Format CD 31 / Amiga Format CD31 (1998-09-02)(Future Publishing)(GB)(Track 1 of 2)[!][issue 1998-10].iso / -seriously_amiga- / hardware / transadf / source / errors.c < prev    next >
C/C++ Source or Header  |  1998-07-20  |  4KB  |  202 lines

  1. /* errors.c - Output various error messages
  2. ** Copyright (C) 1997,1998 Karl J. Ots
  3. ** 
  4. ** This program is free software; you can redistribute it and/or modify
  5. ** it under the terms of the GNU General Public License as published by
  6. ** the Free Software Foundation; either version 2 of the License, or
  7. ** (at your option) any later version.
  8. ** 
  9. ** This program is distributed in the hope that it will be useful,
  10. ** but WITHOUT ANY WARRANTY; without even the implied warranty of
  11. ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  12. ** GNU General Public License for more details.
  13. ** 
  14. ** You should have received a copy of the GNU General Public License
  15. ** along with this program; if not, write to the Free Software
  16. ** Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
  17. */
  18.  
  19. #include <exec/types.h>
  20. #include <exec/errors.h>
  21. #include <devices/trackdisk.h>
  22. #include <dos/dos.h>
  23. #include <clib/dos_protos.h>
  24.  
  25. #include "errors.h"
  26. #include "main.h"
  27. #include "zlib.h"
  28.  
  29.  
  30. /*
  31. ** Output a DOS error value, as returned by IoErr(), as a text string
  32. ** to StdErr.
  33. */
  34. void reportDOSError (LONG DOSError)
  35. {
  36.   char ErrorString[80];
  37.   
  38.   if (Fault (DOSError, "DOS Error", ErrorString, 79))
  39.     FPrintf (StdErr, "%s.\n", ErrorString);
  40.   else
  41.     FPrintf (StdErr, "DOS Error: %ld.\n", DOSError);
  42. }
  43.  
  44.  
  45. /* 
  46. ** Output an IO Error, as returned by OpenDevice()/DoIO(), as a text 
  47. ** string to stderr.
  48. */
  49. void reportIOError (BYTE IOError)
  50. {
  51.   STRPTR ErrStr;
  52.   
  53.   switch (IOError) {
  54.   case IOERR_OPENFAIL:
  55.     ErrStr = "Open Failure";
  56.     break;
  57.   case IOERR_ABORTED:
  58.     ErrStr = "Aborted";
  59.     break;
  60.   case IOERR_NOCMD:
  61.     ErrStr = "No Command";
  62.     break;
  63.   case IOERR_BADLENGTH:
  64.     ErrStr = "Bad Length";
  65.     break;
  66.   case IOERR_BADADDRESS:
  67.     ErrStr = "Bad Address";
  68.     break;
  69.   case IOERR_UNITBUSY:
  70.     ErrStr = "Unit Busy";
  71.     break;
  72.   case IOERR_SELFTEST:
  73.     ErrStr = "Self Test Failure";
  74.     break;
  75.   default:
  76.     ErrStr = NULL;
  77.   }
  78.   
  79.   FPuts (StdErr, "IO Error: ");
  80.   if (ErrStr)
  81.     FPuts (StdErr, ErrStr);
  82.   else
  83.     FPrintf (StdErr, "Unknown (%ld)", IOError);
  84.   FPuts (StdErr, ".\n");
  85. }
  86.  
  87.  
  88. /*
  89. ** Output a TrackDisk IO Error, as returned by OpenDevice()/DoIO(),
  90. ** as a text string to stderr.
  91. */
  92. void reportTDError (BYTE TDError)
  93. {
  94.   STRPTR ErrStr;
  95.  
  96.   /* Check to see if this is a `standard' error */
  97.   if (TDError < 0)
  98.   {
  99.     reportIOError (TDError);
  100.     return;
  101.   }
  102.   
  103.   switch (TDError) {
  104.   case TDERR_NotSpecified:
  105.     ErrStr = "Not Specified";
  106.     break;
  107.   case TDERR_NoSecHdr:
  108.     ErrStr = "No Sector Header";
  109.     break;
  110.   case TDERR_BadSecPreamble:
  111.     ErrStr = "Bad Sector Preamble";
  112.     break;
  113.   case TDERR_BadSecID:
  114.     ErrStr = "Bad Sector ID";
  115.     break;
  116.   case TDERR_BadHdrSum:
  117.     ErrStr = "Bad Header Checksum";
  118.     break;
  119.   case TDERR_BadSecSum:
  120.     ErrStr = "Bad Sector Checksum";
  121.     break;
  122.   case TDERR_TooFewSecs:
  123.     ErrStr = "Too Few Sectors";
  124.     break;
  125.   case TDERR_BadSecHdr:
  126.     ErrStr = "Bad Sector Header";
  127.     break;
  128.   case TDERR_WriteProt:
  129.     ErrStr = "Write Protected";
  130.     break;
  131.   case TDERR_DiskChanged:
  132.     ErrStr = "Disk Changed";
  133.     break;
  134.   case TDERR_SeekError:
  135.     ErrStr = "Seek Error";
  136.     break;
  137.   case TDERR_NoMem:
  138.     ErrStr = "No Memory";
  139.     break;
  140.   case TDERR_BadUnitNum:
  141.     ErrStr = "Bad Unit Number";
  142.     break;
  143.   case TDERR_BadDriveType:
  144.     ErrStr = "Bad Drive Type";
  145.     break;
  146.   case TDERR_DriveInUse:
  147.     ErrStr = "Drive In Use";
  148.     break;
  149.   case TDERR_PostReset:
  150.     ErrStr = "Post Reset";
  151.     break;
  152.   default:
  153.     ErrStr = NULL;
  154.   }
  155.   
  156.   FPuts (StdErr, "TrackDisk Error: ");
  157.   if (ErrStr)
  158.     FPuts (StdErr, ErrStr);
  159.   else
  160.     FPrintf (StdErr, "Unknown (%ld)", TDError);
  161.   FPuts (StdErr, ".\n");
  162. }
  163.  
  164.  
  165. /*
  166. ** Output a Zlib error as a test string.
  167. */
  168. void reportZLibError (LONG ZLibError)
  169. {
  170.   STRPTR ErrStr;
  171.   
  172.   switch (ZLibError) {
  173.   case Z_ERRNO:
  174.     ErrStr = "Error Number";
  175.     break;
  176.   case Z_STREAM_ERROR:
  177.     ErrStr = "Stream Error";
  178.     break;
  179.   case Z_DATA_ERROR:
  180.     ErrStr = "Data Error";
  181.     break;
  182.   case Z_MEM_ERROR:
  183.     ErrStr = "Memory Error";
  184.     break;
  185.   case Z_BUF_ERROR:
  186.     ErrStr = "Buffer Error";
  187.     break;
  188.   case Z_VERSION_ERROR:
  189.     ErrStr = "Version Error";
  190.     break;  
  191.   default:
  192.     ErrStr = NULL;
  193.   }
  194.  
  195.   FPuts (StdErr, "ZLib Error: ");
  196.   if (ErrStr)
  197.     FPuts (StdErr, ErrStr);
  198.   else
  199.     FPrintf (StdErr, "Unknown (%ld)", ZLibError);
  200.   FPuts (StdErr, ".\n");
  201. }
  202.